<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<title>module YARP - yarp: Ruby Standard Library Documentation</title>


<script src="./js/navigation.js" defer></script>
<script src="./js/search.js" defer></script>
<script src="./js/search_index.js" defer></script>
<script src="./js/searcher.js" defer></script>
<script src="./js/darkfish.js" defer></script>

<script src="./js/jquery-3.2.0.min.js"></script>

<script src="./js/vue.min.js"></script>
<script src="./js/js.cookie.min.js"></script>

<link href="./css/fonts.css" rel="stylesheet">
<link id='rdoccss' href="./css/rdoc.css" rel="stylesheet">
<link href="./css/carbon17.css" rel="stylesheet">

<script type="text/javascript">
  var rdoc_rel_prefix = "./";
  var index_rel_prefix = "./";
  var darkModeCsseHref = "./css/rdoc-dm.css"
  var defaultModeCssHref = "./css/rdoc.css"
  // var cssDarkmode = Cookies.get('darkmode');
  
  if( Cookies.get("darkmode") == "true") {
	$('#rdoccss').attr("href", darkModeCsseHref);
}

//  https://cssdeck.com/blog/simple-jquery-stylesheet-switcher/

document.write('<style type="text/css">body{display:none}</style>');

</script>


</head>
<body id="top" role="document" class="module">
  <!-- this is class.html -->

  <div id='actionbar' >
    <div class='wrapper mdiv'>
      <ul class='grids g0'></ul>
    </div> 
    <!-- VERSION HEADER for 3.3.0.preview2 NOT FOUND -->
  </div> <!-- end action bar -->

  <div class='wrapper hdiv'>

    


    <nav id='vapp' role="navigation">
    <div id="project-navigation">
      <div id="home-section" role="region" title="Quick navigation" class="nav-section">
  <h2><a href="./index.html" rel="home">Home</a></h2>

  <div id="table-of-contents-navigation"  >
    <a href="./table_of_contents.html#pages">Pages</a>
    <a href="./table_of_contents.html#classes">Classes</a>
    <a href="./table_of_contents.html#methods">Methods</a>
  </div>
</div>

      <div id="search-section" role="search" class="project-section initially-hidden">
  <form action="#" method="get" accept-charset="utf-8">
    <div id="search-field-wrapper">
      <input id="search-field" role="combobox" aria-label="Search"
             aria-autocomplete="list" aria-controls="search-results"
             type="text" name="search" placeholder="Search" spellcheck="false"
             title="Type to search, Up and Down to navigate, Enter to load">
    </div>

    <ul id="search-results" aria-label="Search Results"
        aria-busy="false" aria-expanded="false"
        aria-atomic="false" class="initially-hidden"></ul>
  </form>
</div>

    </div>


    

    <button id='toggleThing' @click="toggleNav()" >Show/hide navigation</button>
    <div :class="isOpen ? 'block' : 'hidden' " id='toggleMe'>
      <div id="class-metadata">
        
        
        
        
        
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
  <h3>Methods</h3>

  <ul class="link-list" role="directory">
    <li ><a href="#method-c-dump">::dump</a>
    <li ><a href="#method-c-dump_file">::dump_file</a>
    <li ><a href="#method-c-dump_internal">::dump_internal</a>
    <li ><a href="#method-c-lex">::lex</a>
    <li ><a href="#method-c-lex_compat">::lex_compat</a>
    <li ><a href="#method-c-lex_file">::lex_file</a>
    <li ><a href="#method-c-lex_ripper">::lex_ripper</a>
    <li ><a href="#method-c-load">::load</a>
    <li ><a href="#method-c-parse">::parse</a>
    <li ><a href="#method-c-parse_file">::parse_file</a>
    <li ><a href="#method-c-parse_lex">::parse_lex</a>
    <li ><a href="#method-c-parse_lex_file">::parse_lex_file</a>
  </ul>
</div>

      </div>
     </div>
    </nav>


    <div id='extraz'><div class='adzbox-index'  >
      
     </div>         
    </div>

    <main role="main" aria-labelledby="module-YARP">
    <h1 id="module-YARP" class="module">
      module YARP
    </h1>

    <section class="description">
    
<p>Reopening the <a href="YARP.html"><code>YARP</code></a> module after yarp/node is required so that constant reflection APIs will find the constants defined in the node file before these. This block is meant to contain extra APIs we define on <a href="YARP.html"><code>YARP</code></a> nodes that aren’t templated and are meant as convenience methods.</p>

<p>This file is generated by the templates/template.rb script and should not be modified manually. See templates/lib/yarp/mutation_visitor.rb.erb if you are looking to modify the template</p>

<p>This file is generated by the templates/template.rb script and should not be modified manually. See templates/lib/yarp/node.rb.erb if you are looking to modify the template</p>

    </section>

      <section id="5Buntitled-5D" class="documentation-section">


      <section class="constants-list">
      <header>
      <h3>Constants</h3>
      </header>
      <dl>
          <dt id="BACKEND">BACKEND
          <dd>
          <dt id="VERSION">VERSION
          <dd><p>The version constant is set by reading the result of calling yp_version.</p>
        </dl>
        </section>



                <section id="public-class-5Buntitled-5D-method-details" class="method-section">
                <header>
                <h3>Public Class Methods</h3>
                </header>

                  <div id="method-c-dump" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">dump</span><span
                                class="method-args">(code, filepath = nil)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Mirror the <a href="YARP.html#method-c-dump"><code>YARP.dump</code></a> API by using the serialization API.</p>

                              <div class="method-source-code" id="dump-source">
            <pre><span class="ruby-comment"># File yarp/ffi.rb, line 188</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">dump</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">filepath</span> = <span class="ruby-keyword">nil</span>)
  <span class="ruby-identifier">dump_internal</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">code</span>.<span class="ruby-identifier">bytesize</span>, <span class="ruby-identifier">filepath</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-dump_file" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">dump_file</span><span
                                class="method-args">(filepath)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Mirror the <a href="YARP.html#method-c-dump_file"><code>YARP.dump_file</code></a> API by using the serialization API.</p>

                              <div class="method-source-code" id="dump_file-source">
            <pre><span class="ruby-comment"># File yarp/ffi.rb, line 193</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">dump_file</span>(<span class="ruby-identifier">filepath</span>)
  <span class="ruby-constant">LibRubyParser</span><span class="ruby-operator">::</span><span class="ruby-constant">YPString</span>.<span class="ruby-identifier">with</span>(<span class="ruby-identifier">filepath</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">string</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">dump_internal</span>(<span class="ruby-identifier">string</span>.<span class="ruby-identifier">source</span>, <span class="ruby-identifier">string</span>.<span class="ruby-identifier">length</span>, <span class="ruby-identifier">filepath</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-lex" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">lex</span><span
                                class="method-args">(code, filepath = nil)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Mirror the <a href="YARP.html#method-c-lex"><code>YARP.lex</code></a> API by using the serialization API.</p>

                              <div class="method-source-code" id="lex-source">
            <pre><span class="ruby-comment"># File yarp/ffi.rb, line 200</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">lex</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">filepath</span> = <span class="ruby-keyword">nil</span>)
  <span class="ruby-constant">LibRubyParser</span><span class="ruby-operator">::</span><span class="ruby-constant">YPBuffer</span>.<span class="ruby-identifier">with</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">buffer</span><span class="ruby-operator">|</span>
    <span class="ruby-constant">LibRubyParser</span>.<span class="ruby-identifier">yp_lex_serialize</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">code</span>.<span class="ruby-identifier">bytesize</span>, <span class="ruby-identifier">filepath</span>, <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">pointer</span>)
    <span class="ruby-constant">Serialize</span>.<span class="ruby-identifier">load_tokens</span>(<span class="ruby-constant">Source</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">code</span>), <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">read</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-lex_compat" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">lex_compat</span><span
                                class="method-args">(source, filepath = &quot;&quot;)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Returns an array of tokens that closely resembles that of the Ripper lexer. The only difference is that since we don’t keep track of lexer state in the same way, it’s going to always return the NONE state.</p>

                              <div class="method-source-code" id="lex_compat-source">
            <pre><span class="ruby-comment"># File yarp/lex_compat.rb, line 804</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">lex_compat</span>(<span class="ruby-identifier">source</span>, <span class="ruby-identifier">filepath</span> = <span class="ruby-string">&quot;&quot;</span>)
  <span class="ruby-constant">LexCompat</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">source</span>, <span class="ruby-identifier">filepath</span>).<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-lex_file" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">lex_file</span><span
                                class="method-args">(filepath)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Mirror the <a href="YARP.html#method-c-lex_file"><code>YARP.lex_file</code></a> API by using the serialization API.</p>

                              <div class="method-source-code" id="lex_file-source">
            <pre><span class="ruby-comment"># File yarp/ffi.rb, line 208</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">lex_file</span>(<span class="ruby-identifier">filepath</span>)
  <span class="ruby-constant">LibRubyParser</span><span class="ruby-operator">::</span><span class="ruby-constant">YPString</span>.<span class="ruby-identifier">with</span>(<span class="ruby-identifier">filepath</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">string</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">lex</span>(<span class="ruby-identifier">string</span>.<span class="ruby-identifier">read</span>, <span class="ruby-identifier">filepath</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-lex_ripper" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">lex_ripper</span><span
                                class="method-args">(source)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>This lexes with the Ripper lex. It drops any space events but otherwise returns the same tokens. Raises SyntaxError if the syntax in source is invalid.</p>

                              <div class="method-source-code" id="lex_ripper-source">
            <pre><span class="ruby-comment"># File yarp/lex_compat.rb, line 811</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">lex_ripper</span>(<span class="ruby-identifier">source</span>)
  <span class="ruby-identifier">previous</span> = []
  <span class="ruby-identifier">results</span> = []

  <span class="ruby-constant">Ripper</span>.<span class="ruby-identifier">lex</span>(<span class="ruby-identifier">source</span>, <span class="ruby-value">raise_errors:</span> <span class="ruby-keyword">true</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">token</span><span class="ruby-operator">|</span>
    <span class="ruby-keyword">case</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">1</span>]
    <span class="ruby-keyword">when</span> <span class="ruby-value">:on_sp</span>
      <span class="ruby-comment"># skip</span>
    <span class="ruby-keyword">when</span> <span class="ruby-value">:on_tstring_content</span>
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">previous</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:on_tstring_content</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">token</span>[<span class="ruby-value">2</span>].<span class="ruby-identifier">start_with?</span>(<span class="ruby-string">&quot;\#$&quot;</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">2</span>].<span class="ruby-identifier">start_with?</span>(<span class="ruby-string">&quot;\#@&quot;</span>))
        <span class="ruby-identifier">previous</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">2</span>]
      <span class="ruby-keyword">else</span>
        <span class="ruby-identifier">results</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">token</span>
        <span class="ruby-identifier">previous</span> = <span class="ruby-identifier">token</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">when</span> <span class="ruby-value">:on_words_sep</span>
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">previous</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:on_words_sep</span>
        <span class="ruby-identifier">previous</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">2</span>]
      <span class="ruby-keyword">else</span>
        <span class="ruby-identifier">results</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">token</span>
        <span class="ruby-identifier">previous</span> = <span class="ruby-identifier">token</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">results</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">token</span>
      <span class="ruby-identifier">previous</span> = <span class="ruby-identifier">token</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-identifier">results</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-load" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">load</span><span
                                class="method-args">(source, serialized)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Load the serialized AST using the source as a reference into a tree.</p>

                              <div class="method-source-code" id="load-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 380</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">load</span>(<span class="ruby-identifier">source</span>, <span class="ruby-identifier">serialized</span>)
  <span class="ruby-constant">Serialize</span>.<span class="ruby-identifier">load</span>(<span class="ruby-identifier">source</span>, <span class="ruby-identifier">serialized</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-parse" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">parse</span><span
                                class="method-args">(code, filepath = nil)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Mirror the <a href="YARP.html#method-c-parse"><code>YARP.parse</code></a> API by using the serialization API.</p>

                              <div class="method-source-code" id="parse-source">
            <pre><span class="ruby-comment"># File yarp/ffi.rb, line 215</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">parse</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">filepath</span> = <span class="ruby-keyword">nil</span>)
  <span class="ruby-constant">YARP</span>.<span class="ruby-identifier">load</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">dump</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">filepath</span>))
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-parse_file" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">parse_file</span><span
                                class="method-args">(filepath)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Mirror the <a href="YARP.html#method-c-parse_file"><code>YARP.parse_file</code></a> API by using the serialization API. This uses native strings instead of Ruby strings because it allows us to use mmap when it is available.</p>

                              <div class="method-source-code" id="parse_file-source">
            <pre><span class="ruby-comment"># File yarp/ffi.rb, line 222</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">parse_file</span>(<span class="ruby-identifier">filepath</span>)
  <span class="ruby-constant">LibRubyParser</span><span class="ruby-operator">::</span><span class="ruby-constant">YPString</span>.<span class="ruby-identifier">with</span>(<span class="ruby-identifier">filepath</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">string</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">parse</span>(<span class="ruby-identifier">string</span>.<span class="ruby-identifier">read</span>, <span class="ruby-identifier">filepath</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-parse_lex" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">parse_lex</span><span
                                class="method-args">(code, filepath = nil)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Mirror the <a href="YARP.html#method-c-parse_lex"><code>YARP.parse_lex</code></a> API by using the serialization API.</p>

                              <div class="method-source-code" id="parse_lex-source">
            <pre><span class="ruby-comment"># File yarp/ffi.rb, line 229</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">parse_lex</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">filepath</span> = <span class="ruby-keyword">nil</span>)
  <span class="ruby-constant">LibRubyParser</span><span class="ruby-operator">::</span><span class="ruby-constant">YPBuffer</span>.<span class="ruby-identifier">with</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">buffer</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">metadata</span> = [<span class="ruby-identifier">filepath</span>.<span class="ruby-identifier">bytesize</span>, <span class="ruby-identifier">filepath</span>.<span class="ruby-identifier">b</span>, <span class="ruby-value">0</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-string">&quot;LA*L&quot;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">filepath</span>
    <span class="ruby-constant">LibRubyParser</span>.<span class="ruby-identifier">yp_parse_lex_serialize</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">code</span>.<span class="ruby-identifier">bytesize</span>, <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">pointer</span>, <span class="ruby-identifier">metadata</span>)

    <span class="ruby-identifier">source</span> = <span class="ruby-constant">Source</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">code</span>)
    <span class="ruby-identifier">loader</span> = <span class="ruby-constant">Serialize</span><span class="ruby-operator">::</span><span class="ruby-constant">Loader</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">source</span>, <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">read</span>)

    <span class="ruby-identifier">tokens</span> = <span class="ruby-identifier">loader</span>.<span class="ruby-identifier">load_tokens</span>
    <span class="ruby-identifier">node</span>, <span class="ruby-identifier">comments</span>, <span class="ruby-identifier">errors</span>, <span class="ruby-identifier">warnings</span> = <span class="ruby-identifier">loader</span>.<span class="ruby-identifier">load_nodes</span>

    <span class="ruby-identifier">tokens</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">token</span>,<span class="ruby-operator">|</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">value</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-identifier">loader</span>.<span class="ruby-identifier">encoding</span>) }

    <span class="ruby-constant">ParseResult</span>.<span class="ruby-identifier">new</span>([<span class="ruby-identifier">node</span>, <span class="ruby-identifier">tokens</span>], <span class="ruby-identifier">comments</span>, <span class="ruby-identifier">errors</span>, <span class="ruby-identifier">warnings</span>, <span class="ruby-identifier">source</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-parse_lex_file" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">parse_lex_file</span><span
                                class="method-args">(filepath)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Mirror the <a href="YARP.html#method-c-parse_lex_file"><code>YARP.parse_lex_file</code></a> API by using the serialization API.</p>

                              <div class="method-source-code" id="parse_lex_file-source">
            <pre><span class="ruby-comment"># File yarp/ffi.rb, line 247</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">parse_lex_file</span>(<span class="ruby-identifier">filepath</span>)
  <span class="ruby-constant">LibRubyParser</span><span class="ruby-operator">::</span><span class="ruby-constant">YPString</span>.<span class="ruby-identifier">with</span>(<span class="ruby-identifier">filepath</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">string</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">parse_lex</span>(<span class="ruby-identifier">string</span>.<span class="ruby-identifier">read</span>, <span class="ruby-identifier">filepath</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                          </section>

                <section id="private-class-5Buntitled-5D-method-details" class="method-section">
                <header>
                <h3>Private Class Methods</h3>
                </header>

                  <div id="method-c-dump_internal" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">dump_internal</span><span
                                class="method-args">(source, source_size, filepath)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              

                              <div class="method-source-code" id="dump_internal-source">
            <pre><span class="ruby-comment"># File yarp/ffi.rb, line 178</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">dump_internal</span>(<span class="ruby-identifier">source</span>, <span class="ruby-identifier">source_size</span>, <span class="ruby-identifier">filepath</span>)
  <span class="ruby-constant">LibRubyParser</span><span class="ruby-operator">::</span><span class="ruby-constant">YPBuffer</span>.<span class="ruby-identifier">with</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">buffer</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">metadata</span> = [<span class="ruby-identifier">filepath</span>.<span class="ruby-identifier">bytesize</span>, <span class="ruby-identifier">filepath</span>.<span class="ruby-identifier">b</span>, <span class="ruby-value">0</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-string">&quot;LA*L&quot;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">filepath</span>
    <span class="ruby-constant">LibRubyParser</span>.<span class="ruby-identifier">yp_parse_serialize</span>(<span class="ruby-identifier">source</span>, <span class="ruby-identifier">source_size</span>, <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">pointer</span>, <span class="ruby-identifier">metadata</span>)
    <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">read</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                          </section>

              </section>
              </main>



            </div>  <!--  class='wrapper hdiv' -->


<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a></p>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.4.0.</p>
<p>Based on <a href="https://github.com/ged/darkfish/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.</p>

  
    <p><p><a href="https://ruby-doc.org">Ruby-doc.org</a> is provided by <a href="https://jamesbritt.com">James Britt</a> and <a href="https://neurogami.com">Neurogami</a>.</p><p><a href="https://jamesbritt.bandcamp.com/">Maximum R+D</a>.  </p>
</p>
  
  </footer>

<script type="text/javascript">


  let ads  = $("#carbonads-container").children().detach();


  function swapMode() {
    var cookieName = 'darkmode';
    var cssDarkmode = Cookies.get(cookieName);
    console.log("***** swapMode! " + cssDarkmode + " *****");


    if (cssDarkmode == "true") {
      console.log("We have dark mode, set the css to light ...");
      $('#rdoccss').attr("href", defaultModeCssHref);
      $('#cssSelect').text("Dark mode");
      cssDarkmode = "false";
      console.log("swapMode! Now set cookie to " + cssDarkmode);
      Cookies.set(cookieName, cssDarkmode);

    } else {
      console.log("We not have dark mode, set the css to dark ...");
      $('#rdoccss').attr("href", darkModeCsseHref);
      $('#cssSelect').text("Light mode");
      cssDarkmode = "true";
      console.log("swapMode! Now set cookie to " + cssDarkmode);
      Cookies.set(cookieName, cssDarkmode);

    }

    console.log("  --------------- ");
  }


const vueCssApp = new Vue({
el: '#menubar',
data: {
isDark: false
},
methods: {
toggleClass: function(event){
this.isDark = !this.isDark;
}
}
})

const vueApp = new Vue({
el: '#vapp',
data: { 
isOpen: true
},

mounted() {
this.handleResize();
this.manage_mob_classes();
window.addEventListener('resize', this.handleResize)
//this.isOpen !=  (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
},
destroyed() {
window.removeEventListener('resize', this.handleResize)
},
created() {
//manage_mob_classes();
},

methods : {
isMobile() {
  return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
},

  handleResize() {
    if (!this.isMobile()) {
      this.isOpen = window.innerWidth > 800;
    }
  },

  manage_mob_classes() {
    if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
      $("nav").addClass("mob_nav");
      $("main").addClass("mob_main");
      $("#extraz").addClass("mob_extraz");
      $("#carbonads-container").addClass("mob_carbonads-container");
      this.isOpen  = false;
    } else {
      $("nav").removeClass("mob_nav") 
        $("main").removeClass("mob_main");
      $("#extraz").removeClass("mob_extraz");
      $("#carbonads-container").removeClass("mob_carbonads-container");
      this.isOpen  = true;
    }
  },

  toggleNav() {
    this.isOpen =! this.isOpen ;
    // alert("Toggle nav!");
    console.log("toggleNav() click: " + this.isOpen );
  }
}
})

$("#carbonads-container").append(ads);


$(function() {

    var darkmode = Cookies.get("darkmode");
    console.log("Document ready: " + darkmode);

    if ( darkmode  == "true" ) {
      $('#cssSelect').text("Light mode");
    } else {
      $('#cssSelect').text("Dark mode");
     }

    $('body').css('display','block');
    });

</script>

    
  </body> 
</html>

